#include "my_uart.h"
#include "blb.h"

UART_HandleTypeDef huart9={0}; //UART句柄

//初始化串口，初始化锁，并初始化接收处理
void uart9_init(void)
{
    huart9.Instance=GPCOM9;					            //GPCOM9
	huart9.Init.BaudRate=1000000;				        //波特率
	huart9.Init.PinRxd=HAL_PIN_P0;                      //接收脚
	huart9.Init.PinTxd=HAL_PIN_P1;		                //发送脚
	HAL_UART_Init(&huart9);	
    //接收处理
    mUart.com9.rxcallback=uart9_rxproc;
}

//串口发送
void uart9_send(u8 *buf,u16 len)
{
    HAL_UART_Transmit(&huart9,buf,len,HAL_WAIT_FOREVER);
}

//串口接收，无数据时阻塞，有数据时收完一包或者收到指定长度返回
//UART9_RXOTIME_MS为检测周期，一个周期内完全没有数据认为数据包接收完成
//返回接收字节数
u16 uart9_recv(u8 *buf,u16 len)
{
    uint16_t rxlen=0;
    uint16_t ret=0;
    while(len-rxlen>0){
        ret=HAL_UART_Receive(&huart9, buf+rxlen, len-rxlen,UART9_RXOTIME_MS);
        if(ret==0&&rxlen!=0){
            return rxlen;
        }
        else{
            rxlen+=ret;
        }
    }
    return rxlen;
}

//接收处理
void uart9_rxproc(u8 *buf,u16 len)
{
    uart9_send(buf,len);
    void uart0_send(u8* buf, u16 len);
    uart0_send(buf,len);
}



